##############################
# 主要目标模块的源码定位,独立成库 #
##############################

## x64 arm arm64 mipsel
PLAT_CPU ?= x64

BUILD_WITH_NEON ?= 0

ROOT = $(shell pwd)
WEBRTC_SRC = $(ROOT)/src


##### ----- api ----- #####
## audio : aec3_config
API_AUDIO_AEC3_CONFIG_SRCS += api/audio/echo_canceller3_config.cc
## audio : aec3_factory
API_AUDIO_AEC3_FACTORY_SRCS += api/audio/echo_canceller3_factory.cc
## audio : echo_detector_creator
API_AUDIO_ECHO_DETECTOR_CREATOR_SRCS += api/audio/echo_detector_creator.cc


##### ----- third_party ----- #####
## incs
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/meta/type_traits.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/config.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/options.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/policy_checks.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/strings/string_view.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/attributes.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/internal/throw_delegate.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/macros.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/optimization.h
THIRD_ABSL_INCS += third_party/abseil-cpp/absl/base/port.h
## absl : base
THIRD_ABSL_BASE_SRCS += third_party/abseil-cpp/absl/base/internal/throw_delegate.cc
## absl : strings
THIRD_ABSL_STRINGS_SRCS += third_party/abseil-cpp/absl/strings/string_view.cc
THIRD_ABSL_STRINGS_SRCS += third_party/abseil-cpp/absl/strings/ascii.cc
THIRD_ABSL_STRINGS_SRCS += third_party/abseil-cpp/absl/strings/internal/memutil.cc
## absl : types
THIRD_ABSL_TYPES += third_party/abseil-cpp/absl/types/bad_optional_access.cc


##### ----- rtc_base ----- #####
## experiments : field_trial_parser
RTC_BASE_EXPERIMENTS_FIELD_TRIAL_PARSER_SRCS += rtc_base/experiments/field_trial_list.cc
RTC_BASE_EXPERIMENTS_FIELD_TRIAL_PARSER_SRCS += rtc_base/experiments/field_trial_parser.cc
RTC_BASE_EXPERIMENTS_FIELD_TRIAL_PARSER_SRCS += rtc_base/experiments/field_trial_units.cc
RTC_BASE_EXPERIMENTS_FIELD_TRIAL_PARSER_SRCS += rtc_base/experiments/struct_parameters_parser.cc
## checks srcs & incs
RTC_BASE_CHECKS_SRCS += rtc_base/checks.cc
RTC_BASE_CHECKS_INCS += rtc_base/checks.h
RTC_BASE_CHECKS_INCS += rtc_base/numerics/safe_compare.h
RTC_BASE_CHECKS_INCS += rtc_base/system/inline.h
RTC_BASE_CHECKS_INCS += rtc_base/system/rtc_export.h
RTC_BASE_CHECKS_INCS += rtc_base/type_traits.h
RTC_BASE_CHECKS_INCS += api/scoped_refptr.h
## logging
RTC_BASE_LOGGING_SRCS += rtc_base/logging.cc
## timeutils
RTC_BASE_TIMEUTILS_SRCS += rtc_base/system_time.cc
RTC_BASE_TIMEUTILS_SRCS += rtc_base/time_utils.cc
## stringutils
RTC_BASE_STRINGUTILS_SRCS += rtc_base/string_encode.cc
RTC_BASE_STRINGUTILS_SRCS += rtc_base/string_to_number.cc
RTC_BASE_STRINGUTILS_SRCS += rtc_base/string_utils.cc
RTC_BASE_STRINGUTILS_SRCS += rtc_base/strings/string_builder.cc
RTC_BASE_STRINGUTILS_SRCS += rtc_base/strings/string_format.cc
## platform_thread_types
RTC_BASE_PLATFORM_THREAD_TYPES_SRCS += rtc_base/platform_thread_types.cc
## race_checker
RTC_BASE_RACE_CHECKER_SRCS += rtc_base/race_checker.cc


##### ----- system_wrappers ----- #####
SYSTEM_WRAPPERS_SRCS += system_wrappers/source/clock.cc
SYSTEM_WRAPPERS_SRCS += system_wrappers/source/cpu_features.cc
SYSTEM_WRAPPERS_SRCS += system_wrappers/source/cpu_info.cc
SYSTEM_WRAPPERS_SRCS += system_wrappers/source/rtp_to_ntp_estimator.cc
SYSTEM_WRAPPERS_SRCS += system_wrappers/source/sleep.cc
## field_trial
SYSTEM_WRAPPERS_FIELD_TRIAL_SRCS += system_wrappers/source/field_trial.cc
## metrics
SYSTEM_WRAPPERS_METRICS_SRCS += system_wrappers/source/metrics.cc


##### ----- common_audio ----- #####
COMMON_AUDIO_SRCS += common_audio/audio_converter.cc
COMMON_AUDIO_SRCS += common_audio/audio_util.cc
COMMON_AUDIO_SRCS += common_audio/channel_buffer.cc
COMMON_AUDIO_SRCS += common_audio/real_fourier.cc
COMMON_AUDIO_SRCS += common_audio/real_fourier_ooura.cc
COMMON_AUDIO_SRCS += common_audio/resampler/push_resampler.cc
COMMON_AUDIO_SRCS += common_audio/resampler/push_sinc_resampler.cc
COMMON_AUDIO_SRCS += common_audio/resampler/resampler.cc
COMMON_AUDIO_SRCS += common_audio/resampler/sinc_resampler.cc
COMMON_AUDIO_SRCS += common_audio/smoothing_filter.cc
COMMON_AUDIO_SRCS += common_audio/vad/vad.cc
COMMON_AUDIO_SRCS += common_audio/wav_file.cc
COMMON_AUDIO_SRCS += common_audio/wav_header.cc
COMMON_AUDIO_SRCS += common_audio/window_generator.cc
## third_party : ooura/128
COMMON_AUDIO_THIRD_OOURA_FF128_SRCS += common_audio/third_party/ooura/fft_size_128/ooura_fft.cc
ifeq ($(PLAT_CPU),x64)
COMMON_AUDIO_THIRD_OOURA_FF128_SRCS += common_audio/third_party/ooura/fft_size_128/ooura_fft_sse2.cc
endif
ifeq ($(BUILD_WITH_NEON),1)
COMMON_AUDIO_THIRD_OOURA_FF128_SRCS += common_audio/third_party/ooura/fft_size_128/ooura_fft_neon.cc
endif
## third_party : ooura/256
COMMON_AUDIO_THIRD_OOURA_FF256_SRCS += common_audio/third_party/ooura/fft_size_256/fft4g.cc
## third_party : spl_sqrt_floor
COMMON_AUDIO_SPL_SQRT_FLOOR_SRCS += common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c
## common_audio_cc
COMMON_AUDIO_CC_SRCS += common_audio/signal_processing/dot_product_with_scale.cc
## common_audio_c
COMMON_AUDIO_C_SRCS += common_audio/ring_buffer.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/auto_corr_to_refl_coef.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/auto_correlation.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/copy_set_operations.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/cross_correlation.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/division_operations.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/downsample_fast.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/energy.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/filter_ar.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/filter_ma_fast_q12.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/get_hanning_window.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/get_scaling_square.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/ilbc_specific_functions.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/levinson_durbin.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/lpc_to_refl_coef.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/min_max_operations.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/randomization_functions.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/real_fft.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/refl_coef_to_lpc.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample_48khz.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample_by_2.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample_by_2_internal.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample_fractional.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/spl_init.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/spl_inl.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/spl_sqrt.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/splitting_filter.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/sqrt_of_one_minus_x_squared.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/vector_scaling_operations.c
COMMON_AUDIO_C_SRCS += common_audio/vad/vad_core.c
COMMON_AUDIO_C_SRCS += common_audio/vad/vad_filterbank.c
COMMON_AUDIO_C_SRCS += common_audio/vad/vad_gmm.c
COMMON_AUDIO_C_SRCS += common_audio/vad/vad_sp.c
COMMON_AUDIO_C_SRCS += common_audio/vad/webrtc_vad.c
ifeq ($(PLAT_CPU),mipsel)
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/complex_bit_reverse_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/complex_fft_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/cross_correlation_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/downsample_fast_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/filter_ar_fast_q12_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/min_max_operations_mips.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/resample_by_2_mips.c
else
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/complex_fft.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/complex_bit_reverse.c
COMMON_AUDIO_C_SRCS += common_audio/signal_processing/filter_ar_fast_q12.c
endif
COMMON_AUDIO_C_SRCS += $(COMMON_AUDIO_CC_SRCS)
COMMON_AUDIO_C_SRCS += $(COMMON_AUDIO_THIRD_OOURA_FF256_SRCS)
COMMON_AUDIO_C_SRCS += $(COMMON_AUDIO_SPL_SQRT_FLOOR_SRCS)


##### ----- audio coding ----- #####
## isac_vad
AUDIO_CODING_ISAC_VAD_SRCS += modules/audio_coding/codecs/isac/main/source/filter_functions.c
AUDIO_CODING_ISAC_VAD_SRCS += modules/audio_coding/codecs/isac/main/source/isac_vad.c
AUDIO_CODING_ISAC_VAD_SRCS += modules/audio_coding/codecs/isac/main/source/pitch_estimator.c
AUDIO_CODING_ISAC_VAD_SRCS += modules/audio_coding/codecs/isac/main/source/pitch_filter.c


##### ----- audio processing ----- #####
## apm_logging
AUDIO_PROCESS_APM_LOGGING_SRCS += modules/audio_processing/logging/apm_data_dumper.cc
## audio_buffer
AUDIO_PROCESS_AUDIO_BUFFER_SRCS += modules/audio_processing/audio_buffer.cc
AUDIO_PROCESS_AUDIO_BUFFER_SRCS += modules/audio_processing/splitting_filter.cc
AUDIO_PROCESS_AUDIO_BUFFER_SRCS += modules/audio_processing/three_band_filter_bank.cc
## high_pass_filter
AUDIO_PROCESS_HIGH_PASS_FILTER_SRCS += modules/audio_processing/high_pass_filter.cc
## utility : cascaded_biquad_filter
AUDIO_PROCESS_UTILITY_CBF_SRCS += modules/audio_processing/utility/cascaded_biquad_filter.cc
## utility : legacy_delay_estimator
AUDIO_PROCESS_UTILITY_LDE_SRCS += modules/audio_processing/utility/delay_estimator.cc
AUDIO_PROCESS_UTILITY_LDE_SRCS += modules/audio_processing/utility/delay_estimator_wrapper.cc


##### ----- ns ----- #####
NS_SRCS += modules/audio_processing/ns/fast_math.cc
NS_SRCS += modules/audio_processing/ns/histograms.cc
NS_SRCS += modules/audio_processing/ns/noise_estimator.cc
NS_SRCS += modules/audio_processing/ns/noise_suppressor.cc
NS_SRCS += modules/audio_processing/ns/ns_fft.cc
NS_SRCS += modules/audio_processing/ns/prior_signal_model.cc
NS_SRCS += modules/audio_processing/ns/prior_signal_model_estimator.cc
NS_SRCS += modules/audio_processing/ns/quantile_noise_estimator.cc
NS_SRCS += modules/audio_processing/ns/signal_model.cc
NS_SRCS += modules/audio_processing/ns/signal_model_estimator.cc
NS_SRCS += modules/audio_processing/ns/speech_probability_estimator.cc
NS_SRCS += modules/audio_processing/ns/suppression_params.cc
NS_SRCS += modules/audio_processing/ns/wiener_filter.cc
NS_SRCS += $(RTC_BASE_CHECKS_SRCS)
NS_SRCS += $(COMMON_AUDIO_C_SRCS)
## ns objs
NS_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(NS_SRCS)}
## ns 模块对外头文件
NS_INCS += api/array_view.h
NS_INCS += modules/audio_processing/ns/ns_common.h
NS_INCS += modules/audio_processing/ns/ns_config.h
NS_INCS += modules/audio_processing/ns/noise_estimator.h
NS_INCS += modules/audio_processing/ns/quantile_noise_estimator.h
NS_INCS += modules/audio_processing/ns/suppression_params.h
NS_INCS += $(RTC_BASE_CHECKS_INCS)
NS_INCS += $(THIRD_ABSL_INCS)


##### ----- vad ----- #####
VAD_SRCS += modules/audio_processing/vad/gmm.cc
VAD_SRCS += modules/audio_processing/vad/pitch_based_vad.cc
VAD_SRCS += modules/audio_processing/vad/pitch_internal.cc
VAD_SRCS += modules/audio_processing/vad/pole_zero_filter.cc
VAD_SRCS += modules/audio_processing/vad/standalone_vad.cc
VAD_SRCS += modules/audio_processing/vad/vad_audio_proc.cc
VAD_SRCS += modules/audio_processing/vad/vad_circular_buffer.cc
VAD_SRCS += modules/audio_processing/vad/voice_activity_detector.cc
VAD_SRCS += $(RTC_BASE_CHECKS_SRCS)
VAD_SRCS += $(COMMON_AUDIO_C_SRCS)
VAD_SRCS += $(AUDIO_CODING_ISAC_VAD_SRCS)
## vad objs
VAD_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(VAD_SRCS)}
## vad 模块对外头文件
VAD_INCS += common_audio/vad/include/webrtc_vad.h


##### ----- agc ----- #####
AGC_SRCS += modules/audio_processing/agc/agc_manager_direct.cc
AGC_SRCS += modules/audio_processing/agc/agc.cc
AGC_SRCS += modules/audio_processing/agc/loudness_histogram.cc
AGC_SRCS += modules/audio_processing/agc/utility.cc
AGC_SRCS += $(VAD_SRCS)
AGC_SRCS += $(AUDIO_PROCESS_APM_LOGGING_SRCS)
AGC_SRCS += $(AUDIO_PROCESS_AUDIO_BUFFER_SRCS)
AGC_SRCS += $(COMMON_AUDIO_SRCS)
AGC_SRCS += $(RTC_BASE_LOGGING_SRCS)
AGC_SRCS += $(RTC_BASE_TIMEUTILS_SRCS)
AGC_SRCS += $(RTC_BASE_STRINGUTILS_SRCS)
AGC_SRCS += $(RTC_BASE_PLATFORM_THREAD_TYPES_SRCS)
AGC_SRCS += $(THIRD_ABSL_BASE_SRCS)
AGC_SRCS += $(THIRD_ABSL_STRINGS_SRCS)
## agc objs
AGC_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(AGC_SRCS)}
## agc 模块对外头文件
AGC_INCS += api/array_view.h
AGC_INCS += modules/audio_processing/agc/agc.h
AGC_INCS += modules/audio_processing/vad/voice_activity_detector.h
AGC_INCS += common_audio/resampler/include/resampler.h
AGC_INCS += common_audio/vad/include/webrtc_vad.h
AGC_INCS += modules/audio_processing/vad/common.h
AGC_INCS += modules/audio_processing/vad/gmm.h
AGC_INCS += modules/audio_processing/vad/pitch_based_vad.h
AGC_INCS += modules/audio_processing/vad/standalone_vad.h
AGC_INCS += modules/audio_processing/vad/vad_audio_proc.h
AGC_INCS += $(RTC_BASE_CHECKS_INCS)
AGC_INCS += $(THIRD_ABSL_INCS)


##### ----- legacy_agc ----- #####
LEGACY_AGC_SRCS += modules/audio_processing/agc/legacy/analog_agc.cc
LEGACY_AGC_SRCS += modules/audio_processing/agc/legacy/digital_agc.cc
LEGACY_AGC_SRCS += $(RTC_BASE_CHECKS_SRCS)
LEGACY_AGC_SRCS += $(COMMON_AUDIO_C_SRCS)
## legacy_agc objs
LEGACY_AGC_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(LEGACY_AGC_SRCS)}
## legacy_agc 模块对外头文件
LEGACY_AGC_INCS += modules/audio_processing/agc/legacy/gain_control.h


##### ----- aecm ----- #####
AECM_SRCS += modules/audio_processing/aecm/aecm_core.cc
AECM_SRCS += modules/audio_processing/aecm/echo_control_mobile.cc
ifeq ($(BUILD_WITH_NEON),1)
AECM_SRCS += modules/audio_processing/aecm/aecm_core_neon.cc
endif
ifeq ($(PLAT_CPU),mipsel)
AECM_SRCS += modules/audio_processing/aecm/aecm_core_mips.cc
else
AECM_SRCS += modules/audio_processing/aecm/aecm_core_c.cc
endif
AECM_SRCS += $(AUDIO_PROCESS_UTILITY_LDE_SRCS)
AECM_SRCS += $(RTC_BASE_CHECKS_SRCS)
AECM_SRCS += $(COMMON_AUDIO_C_SRCS)
## aecm objs
AECM_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(AECM_SRCS)}
## aecm 模块对外头文件
AECM_INCS += modules/audio_processing/aecm/echo_control_mobile.h


##### ----- aec3 ----- #####
AEC3_SRCS += modules/audio_processing/aec3/adaptive_fir_filter.cc
AEC3_SRCS += modules/audio_processing/aec3/adaptive_fir_filter_erl.cc
AEC3_SRCS += modules/audio_processing/aec3/aec3_common.cc
AEC3_SRCS += modules/audio_processing/aec3/aec3_fft.cc
AEC3_SRCS += modules/audio_processing/aec3/aec_state.cc
AEC3_SRCS += modules/audio_processing/aec3/alignment_mixer.cc
AEC3_SRCS += modules/audio_processing/aec3/api_call_jitter_metrics.cc
AEC3_SRCS += modules/audio_processing/aec3/block_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/block_delay_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/block_framer.cc
AEC3_SRCS += modules/audio_processing/aec3/block_processor.cc
AEC3_SRCS += modules/audio_processing/aec3/block_processor_metrics.cc
AEC3_SRCS += modules/audio_processing/aec3/clockdrift_detector.cc
AEC3_SRCS += modules/audio_processing/aec3/coarse_filter_update_gain.cc
AEC3_SRCS += modules/audio_processing/aec3/comfort_noise_generator.cc
AEC3_SRCS += modules/audio_processing/aec3/config_selector.cc
AEC3_SRCS += modules/audio_processing/aec3/decimator.cc
AEC3_SRCS += modules/audio_processing/aec3/dominant_nearend_detector.cc
AEC3_SRCS += modules/audio_processing/aec3/downsampled_render_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_audibility.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_canceller3.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_path_delay_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_path_variability.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_remover.cc
AEC3_SRCS += modules/audio_processing/aec3/echo_remover_metrics.cc
AEC3_SRCS += modules/audio_processing/aec3/erl_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/erle_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/fft_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/filter_analyzer.cc
AEC3_SRCS += modules/audio_processing/aec3/frame_blocker.cc
AEC3_SRCS += modules/audio_processing/aec3/fullband_erle_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/matched_filter.cc
AEC3_SRCS += modules/audio_processing/aec3/matched_filter_lag_aggregator.cc
AEC3_SRCS += modules/audio_processing/aec3/moving_average.cc
AEC3_SRCS += modules/audio_processing/aec3/multi_channel_content_detector.cc
AEC3_SRCS += modules/audio_processing/aec3/refined_filter_update_gain.cc
AEC3_SRCS += modules/audio_processing/aec3/render_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/render_delay_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/render_delay_controller.cc
AEC3_SRCS += modules/audio_processing/aec3/render_delay_controller_metrics.cc
AEC3_SRCS += modules/audio_processing/aec3/render_signal_analyzer.cc
AEC3_SRCS += modules/audio_processing/aec3/residual_echo_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/reverb_decay_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/reverb_frequency_response.cc
AEC3_SRCS += modules/audio_processing/aec3/reverb_model.cc
AEC3_SRCS += modules/audio_processing/aec3/reverb_model_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/signal_dependent_erle_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/spectrum_buffer.cc
AEC3_SRCS += modules/audio_processing/aec3/stationarity_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/subband_erle_estimator.cc
AEC3_SRCS += modules/audio_processing/aec3/subband_nearend_detector.cc
AEC3_SRCS += modules/audio_processing/aec3/subtractor.cc
AEC3_SRCS += modules/audio_processing/aec3/subtractor_output.cc
AEC3_SRCS += modules/audio_processing/aec3/subtractor_output_analyzer.cc
AEC3_SRCS += modules/audio_processing/aec3/suppression_filter.cc
AEC3_SRCS += modules/audio_processing/aec3/suppression_gain.cc
AEC3_SRCS += modules/audio_processing/aec3/transparent_mode.cc
ifeq ($(PLAT_CPU),x64)
AEC3_SRCS += modules/audio_processing/aec3/adaptive_fir_filter_avx2.cc
AEC3_SRCS += modules/audio_processing/aec3/adaptive_fir_filter_erl_avx2.cc
AEC3_SRCS += modules/audio_processing/aec3/fft_data_avx2.cc
AEC3_SRCS += modules/audio_processing/aec3/matched_filter_avx2.cc
AEC3_SRCS += modules/audio_processing/aec3/vector_math_avx2.cc
endif
AEC3_SRCS += $(AUDIO_PROCESS_APM_LOGGING_SRCS)
AEC3_SRCS += $(AUDIO_PROCESS_AUDIO_BUFFER_SRCS)
AEC3_SRCS += $(AUDIO_PROCESS_HIGH_PASS_FILTER_SRCS)
AEC3_SRCS += $(AUDIO_PROCESS_UTILITY_CBF_SRCS)
AEC3_SRCS += $(API_AUDIO_AEC3_CONFIG_SRCS)
AEC3_SRCS += $(API_AUDIO_AEC3_FACTORY_SRCS)
AEC3_SRCS += $(API_AUDIO_ECHO_DETECTOR_CREATOR_SRCS)
AEC3_SRCS += $(COMMON_AUDIO_C_SRCS)
AEC3_SRCS += $(COMMON_AUDIO_THIRD_OOURA_FF128_SRCS)
AEC3_SRCS += $(RTC_BASE_CHECKS_SRCS)
AEC3_SRCS += $(RTC_BASE_LOGGING_SRCS)
AEC3_SRCS += $(RTC_BASE_RACE_CHECKER_SRCS)
AEC3_SRCS += $(RTC_BASE_TIMEUTILS_SRCS)
AEC3_SRCS += $(RTC_BASE_STRINGUTILS_SRCS)
AEC3_SRCS += $(RTC_BASE_PLATFORM_THREAD_TYPES_SRCS)
AEC3_SRCS += $(THIRD_ABSL_BASE_SRCS)
AEC3_SRCS += $(THIRD_ABSL_STRINGS_SRCS)
AEC3_SRCS += $(THIRD_ABSL_TYPES)
AEC3_SRCS += $(RTC_BASE_EXPERIMENTS_FIELD_TRIAL_PARSER_SRCS)
AEC3_SRCS += $(SYSTEM_WRAPPERS_SRCS)
AEC3_SRCS += $(SYSTEM_WRAPPERS_FIELD_TRIAL_SRCS)
AEC3_SRCS += $(SYSTEM_WRAPPERS_METRICS_SRCS)
## aec3 objs
AEC3_OBJS += ${patsubst %c, $(WEBRTC_SRC)/%c.o, $(AEC3_SRCS)}
## aec3 模块对外头文件
AEC3_INCS += api/audio/echo_canceller3_factory.h
AEC3_INCS += api/audio/echo_canceller3_config.h
AEC3_INCS += api/audio/echo_control.h
AEC3_INCS += $(RTC_BASE_CHECKS_INCS)
AEC3_INCS += $(THIRD_ABSL_INCS)
